Synchronous digital circuits (e.g., microprocessors) use internal clock signals to control operation sequences and timing of events. Some digital systems implement multiple clock domains in which the clock frequency in each domain is the same and skew within each domain is tightly controlled. However, skew between clock domains may negatively impact setup and hold constraints, resulting in non-determinism for signals crossing between domains. This skew between clock domains is magnified at higher frequencies.
Although asynchronous circuit design may be implemented where the magnitude of skew between clock domains is not known or cannot be held within acceptable bounds, synchronous circuit design is generally preferred for enhanced performance, deterministic data transfer, and more predictable behavior. Synchronous circuit designs typically employ a delay line, commonly referred to as a “salmon ladder,” to transfer data synchronously between clock domains. The delay line includes delay components which match the source clock on one end of the delay line and increase in increments to match the sink clock on the other end of the delay line.
Delay lines, however, are typically matched to the source and sink clocks during design and do not account for various processing speeds, supply voltage effects, temperature effects, and frequency conditions during operation. In addition, the delay line may be constructed with different types of metal, field-effect transistors (FETs), and/or resistor-capacitor (R-C) components from what is used in the actual signal path. Any one or more of these factors may result in non-determinism, even in synchronous circuit designs which implement delay lines.